<?php
Class ContatoDoCliente extends TRecord
{
	const TABLENAME='contatodocliente';
	/*
	 * reecrevemos o construstor para que possamos instanciar um objeto já com seus
	 * atributos
	 */
	public function __construct($id = NULL,$idcli =NULL,$idcontato=NULL) {
		if ($id)
		{
			parent::__construct($id);
		}
		else if ($idcli<>NULL and $idcontato<>NULL)
		{
			$this->idcli=$idcli;
			$this->idcontato=$idcontato;
		 //como a função desta classe é so mediar relacionamentos
								//usamos o metodo de armazena logo em sua construção
		}
	}
	/*
	 * function CarregaTelefone
	 * função de carregar telefones do cliente baseado no id do cliente
	 * chamando uma view do banco (telefonesdocliente)
	 * @param $idcli = id do cliente desejado
	 */
	public function carregaTelefone($idcli){ 
		$telefones= $this->carregaVisao('telefonesdocliente', $idcli,'idcli');
		if ($telefones)
		{
		
			foreach ($telefones as $telefone){
				$resutaldo[]=new Contato($telefone->id);
			}
			return $resutaldo;
		}
		else
		{
			return FALSE;
		}
		
	}
	public function carregarId($idcli,$idcontato){
		//instancia instrução de SELECT
		$sql = new TSqlSelect();
		$sql->setEntity('contatodocliente');
		$sql->addColumn('id');
		
		//cria critério de seleção basedado no ID
		$criterio= new TCriteria();
		$criterio->add(new TFilter('idcli', '=', $idcli));
		$criterio->add(new TFilter('idcontato', '=', $idcontato));
		//define o criterio de selção de dados
		$sql->setCriteria($criterio);
		//obtém transação ativa
		if ($con=TTransaction::Pega())
		{
			//cria mensagem de log e executa a consulta
			TTransaction::Log($sql->getInstruction());
			$resultado= $con->query($sql->getInstruction());
			//se retornou algum dado
			if ($resultado)
			{
				//rorna dados em forma de objeto
				$objeto= $resultado->fetch();
			}
			return $objeto[0];
		}
		else
		{
			//se não tiver transação, retonra uma exceção
			throw  new Exception('Não há transação ativa!!');
		}
	}
}
?>